#pragma once

#include <boost/describe.hpp>

#include <algorithm/analytical_model/Constants.h>
#include <algorithm/analytical_model/ModelPara.h>
#include <utils/ParaUtils.h>

#include <memory>

namespace solar
{
    class ModelPara;

    class ConvolutionPara
    {
        public:
            ConvolutionPara() = default;

#include <utils/class_name.inc>

        private:
            ConvolutionModelType model_type_;
            std::shared_ptr<ModelPara> model_para_;

            BOOST_DESCRIBE_CLASS(ConvolutionPara, (), (), (), (model_type_, model_para_))
    };
} // namespace solar

#define CURRENT_CLASS_NAME ConvolutionPara
#include <utils/class_describe_header.inc>
SOLAR_DESCRIBE_CLASS(ConvolutionPara, (), (), (), (model_type_, model_para_))
